package com.kaili.tms.mapper;

import com.baomidou.mybatisplus.plugins.Page;
import com.kaili.tms.pojo.dto.SchedulingPlanDTO;
import com.kaili.tms.pojo.entity.*;
import com.kaili.tms.pojo.vo.BaseDriverVO;
import com.kaili.tms.pojo.vo.SchedulingDetailShiftsRulesVO;
import com.kaili.tms.pojo.vo.SchedulingPlanDetailsVO;
import com.kaili.tms.pojo.vo.SchedulingPlanVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.HashMap;
import java.util.List;

/**
 * @version 1.0
 * @author: xinglei
 * @Time: 19-2-14 上午9:12
 * @Copyright: © 2018 杭州凯立通信有限公司 版权所有
 * @Warning: 本内容仅限于公司内部传阅,
 * 禁止外泄或用于其它商业目的
 */
@Mapper
public interface SchedulingPlanMapper {
    /**
     * 新增车辆班次信息
     *
     * @param VehicleShiftsAdd
     * @return void
     * @author:xinglei
     * @Time: 19-2-15 上午9:12
     */
    void schedulingPlanAdd(SchedulingPlanAddEnity schedulingPlanAdd);

    /**
     * 获取车次编码
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei
     * @Time: 19-2-15 上午9:12
     */
    String getVehicleCode(Integer sitId);

    /**
     * 分页查询车辆班次信息
     *
     * @param page
     * @param vehicleShiftsAdd
     * @return com.baomidou.mybatisplus.plugins.Page<com.kaili.tms.pojo.vo.VehicleShiftsVO>
     * @author:xinglei
     * @Time: 19-2-15 上午9:12
     */
    List<SchedulingPlanVO> queryschedulingPlan(Page<SchedulingPlanVO> page, SchedulingPlanDTO schedulingPlanDTO);

    /**
     * 修改车辆班次信息
     *
     * @param VehicleShiftsAdd
     * @return void
     * @author:xinglei
     * @Time: 19-2-15 上午9:13
     */
    void schedulingPlanUpdate(SchedulingPlanUpdateEntity schedulingPlanUpdateEntity);

    /**
     * 根据车线ID去查询班次规则表(新增)
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<SchedulingDetailShiftsRulesVO> getAllShiftsRules(Long carLineId);

    /**
     * 根据车线ID去查询班次规则表(修改)
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<SchedulingDetailShiftsRulesVO> getSchedulingPlanDetal(Long plandId);

    /**
     * 根据车线ID去查询班次规则表(修改)
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<SchedulingDetailShiftsRulesVO> getSchedulingPlanDetal1(Long plandId);

    /**
     * 插入关联表
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void shiftsSchedulingAdd(ShiftsSchedulingEntity shiftsSchedulingEntity);

    /**
     * 插入计划明细
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void schedulingPlanDetailAdd(SchedulingPlanDetailsAddEntity schedulingPlanDetailsAddEntity);

    /**
     * 根据排班计划ID查询排班明细
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<SchedulingPlanDetailsVO> getAllschedulingPlanDetail(Long planid);

    /**
     * 根据排版计划明细ID 删除明细记录
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void schedulingPlanDetailDelete(Long planid);

    /**
     * 根据排版计划ID 删除排版计划
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void schedulingPlanDelete(Long planid);

    /**
     * 得到排版编号
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    String schedulingPlanCode(Integer sitId);

    /**
     * 修改排班计划明细
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void schedulingPlanDetailUpdate(SchedulingPlanDetailsUpdateEntity planDetailsUpdateEntity);

    /**
     * 根据车线查询排版计划
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<SchedulingPlanVO> getSchedulingPlanId(SchedulingPlanAddEnity schedulingPlanAdd);

    /**
     * 根据车牌号查询车两
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<BaseDriverVO> schedulingPlanCarId(HashMap map);

    /**
     * 根据车线ID查询车两(随机用)
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    List<BaseDriverVO> getCarLinId(Long carLineId);


    /**
     * 根据排班ID 修改排班状态
     *
     * @param sitId
     * @return java.lang.String
     * @author:xinglei @Time: 19-2-15 上午9:12
     */
    void updateArlary(Long planid);
}
